﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MontagsmalerApp.ViewModels
{
	public class MalrundeVorbereitet : SpielStatus
	{
		public MalrundeVorbereitet(Spiel spiel)
			: base(spiel)
		{

		}

		public override void SpielVorbereiten()
		{
			throw new StatusWechselException();
		}

		public override void MalrundeVorbereiten()
		{
		}

		public override void NeuenBegriffErzeugen()
		{
			// Spieler ermitteln
			if (_spiel.AktuellerSpieler == null)
				throw new Exception("Es wurde kein Spieler ausgewählt");

			// Neuen Begriff suchen und auswählen
			if (_spiel.NichtBenutzteBegriffe.Count == 0)
				MalrundeBeenden();

			Random random = new Random();
			int neuerBegriffIndex = random.Next(_spiel.NichtBenutzteBegriffe.Count);

			_spiel.AktuellerBegriff = _spiel.NichtBenutzteBegriffe[neuerBegriffIndex];
			_spiel.NichtBenutzteBegriffe.RemoveAt(neuerBegriffIndex);

			// Sekunden zurücksetzen
			_spiel.VerbleibendeSekundenBegriff = _spiel.MaximaleSekundenBegriff;
			_spiel.VerbleibendeSekundenMalrunde = _spiel.MaximaleSekundenMalrunde;

			_spiel.StartTimer();

			_spiel.MalrundeLaeuftGerade = true;

			_spiel.Log("Neuer Begriff wurde erzeugt");

			_spiel.Status = new BegriffWirdGemalt(_spiel);
		}

		public override void BegriffBeenden(bool erraten)
		{
			throw new StatusWechselException();
		}

		public override void MalrundeBeenden()
		{
			_spiel.MalrundeLaeuftGerade = false;
			_spiel.Log("Malrunde wurde beendet");

			_spiel.Status = new MalrundeBeendet(_spiel);
		}

		public override void SpielBeenden()
		{
			_spiel.Status = new MalrundeBeendet(_spiel);
			_spiel.Status.SpielBeenden();
		}
	}
}
